package br.com.processo.persistencia.dao;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.NoResultException;
import javax.persistence.TypedQuery;

import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;

import br.com.processo.modelo.Cidade;
import br.com.processo.modelo.Estado;

public class CidadeDAO extends GenericDAOImpl<Cidade> {
	
	public Cidade getCidadePorNome(String nomeCidade) {
		Session session = getSession();
		Criteria criteria = session.createCriteria(Cidade.class);
		criteria.add(Restrictions.eq("nome", nomeCidade));

		Cidade cidade = (Cidade) criteria.uniqueResult();

		return cidade;
	}

	public List<Cidade> getCidadesDoEstado(Estado estado) {
		String sql = "FROM Cidade c WHERE c.estado.id = :idEstado";
		TypedQuery<Cidade> query = this.entityManager.createQuery(sql, Cidade.class);
		query.setParameter("idEstado", estado.getId());

		try {
			return query.getResultList();
		} catch (NoResultException ex) {
			ex.printStackTrace();
			return new ArrayList<Cidade>();
		}
	}

}
